<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<link rel="STYLESHEET" href="lib.css" type='text/css' />
<link rel="SHORTCUT ICON" href="../icons/pyfav.png" type="image/png" />
<link rel='start' href='../index.html' title='Python documentation Index' />
<link rel="first" href="lib.html" title='Python library Reference' />
<link rel='contents' href='contents.html' title="Contents" />
<link rel='index' href='genindex.html' title='Index' />
<link rel='last' href='about.html' title='About this document...' />
<link rel='help' href='about.html' title='About this document...' />
<link rel="next" href="module-ConfigParser.html" />
<link rel="prev" href="fileformats.html" />
<link rel="parent" href="fileformats.html" />
<link rel="next" href="csv-contents.html" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name='aesop' content='information' />
<title>9.1 csv -- CSV File Reading and Writing</title>
</head>
<body>
<div class="navigation">
<div id='top-navigation-panel' xml:id='top-navigation-panel'>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="9. file Formats"
  href="fileformats.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="9. file Formats"
  href="fileformats.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="9.1.1 module Contents"
  href="csv-contents.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python Library Reference</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="fileformats.html">9. File Formats</a>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="fileformats.html">9. File Formats</a>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="csv-contents.html">9.1.1 Module Contents</a>
</div>
<hr /></div>
</div>
<!--End of Navigation Panel-->

<h1><a name="SECTION0011100000000000000000">
9.1 <tt class="module">csv</tt> -- CSV File Reading and Writing</a>
</h1>

<p>
<a name="module-csv"></a>

<p>

<span class="versionnote">New in version 2.3.</span>

<a id='l2h-2007' xml:id='l2h-2007'></a>
<a id='l2h-2006' xml:id='l2h-2006'></a>
<p>
The so-called CSV (Comma Separated Values) format is the most common import
and export format for spreadsheets and databases.  There is no ``CSV
standard'', so the format is operationally defined by the many applications
which read and write it.  The lack of a standard means that subtle
differences often exist in the data produced and consumed by different
applications.  These differences can make it annoying to process CSV files
from multiple sources.  Still, while the delimiters and quoting characters
vary, the overall format is similar enough that it is possible to write a
single module which can efficiently manipulate such data, hiding the details
of reading and writing the data from the programmer.

<p>
The <tt class="module">csv</tt> module implements classes to read and write tabular data in
CSV format.  It allows programmers to say, ``write this data in the format
preferred by Excel,'' or ``read data from this file which was generated by
Excel,'' without knowing the precise details of the CSV format used by
Excel.  Programmers can also describe the CSV formats understood by other
applications or define their own special-purpose CSV formats.

<p>
The <tt class="module">csv</tt> module's <tt class="class">reader</tt> and <tt class="class">writer</tt> objects read and
write sequences.  Programmers can also read and write data in dictionary
form using the <tt class="class">DictReader</tt> and <tt class="class">DictWriter</tt> classes.

<p>
<div class="note"><b class="label">Note:</b>
This version of the <tt class="module">csv</tt> module doesn't support Unicode
  input.  Also, there are currently some issues regarding ASCII NUL
  characters.  Accordingly, all input should be UTF-8 or printable
  ASCII to be safe; see the examples in section&nbsp;<a href="csv-examples.html#csv-examples">9.1.5</a>.
  These restrictions will be removed in the future.
</div>

<p>
<div class="seealso">
  <p class="heading">See Also:</p>

<dl compact="compact" class="seerfc">
    <dt><a href="http://www.python.org/peps/pep-0305.html"
        title="CSV file API"
        >PEP 305, <em>CSV File API</em></a>
    <dd>The Python Enhancement Proposal which proposed this addition
          to Python.
  </dl>
</div>

<p>

<p><br /></p><hr class='online-navigation' />
<div class='online-navigation'>
<!--Table of Child-Links-->
<a name="CHILD_LINKS"><strong>Subsections</strong></a>

<ul class="ChildLinks">
<li><a href="csv-contents.html">9.1.1 Module Contents</a>
<li><a href="csv-fmt-params.html">9.1.2 Dialects and Formatting Parameters</a>
<li><a href="node264.html">9.1.3 Reader Objects</a>
<li><a href="node265.html">9.1.4 Writer Objects</a>
<li><a href="csv-examples.html">9.1.5 Examples</a>
</ul>
<!--End of Table of Child-Links-->
</div>

<div class="navigation">
<div class='online-navigation'>
<p></p><hr />
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="9. file Formats"
  href="fileformats.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="9. file Formats"
  href="fileformats.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="9.1.1 module Contents"
  href="csv-contents.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python Library Reference</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="fileformats.html">9. File Formats</a>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="fileformats.html">9. File Formats</a>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="csv-contents.html">9.1.1 Module Contents</a>
</div>
</div>
<hr />
<span class="release-info">Release 2.5.1, documentation updated on 18th April, 2007.</span>
</div>
<!--End of Navigation Panel-->
<address>
See <i><a href="about.html">About this document...</a></i> for information on suggesting changes.
</address>
</body>
</html>
